home *** CD-ROM | disk | FTP | other *** search
- head 1.10;
- branch ;
- access ;
- symbols sprited:1.9.1;
- locks ; strict;
- comment @ * @;
-
-
- 1.10
- date 92.06.16.12.45.21; author jhh; state Exp;
- branches ;
- next 1.9;
-
- 1.9
- date 91.05.07.18.38.38; author jhh; state Exp;
- branches 1.9.1.1;
- next 1.8;
-
- 1.8
- date 91.03.05.11.24.28; author jhh; state Exp;
- branches ;
- next 1.7;
-
- 1.7
- date 90.01.12.13.31.09; author jhh; state Exp;
- branches ;
- next 1.6;
-
- 1.6
- date 89.07.18.13.46.12; author jhh; state Exp;
- branches ;
- next 1.5;
-
- 1.5
- date 89.07.12.11.47.26; author jhh; state Exp;
- branches ;
- next 1.4;
-
- 1.4
- date 89.06.19.14.33.58; author jhh; state Exp;
- branches ;
- next 1.3;
-
- 1.3
- date 89.01.11.12.21.21; author mendel; state Exp;
- branches ;
- next 1.2;
-
- 1.2
- date 88.08.20.14.32.23; author ouster; state Exp;
- branches ;
- next 1.1;
-
- 1.1
- date 88.08.19.18.06.06; author ouster; state Exp;
- branches ;
- next ;
-
- 1.9.1.1
- date 92.03.31.17.13.24; author kupfer; state Exp;
- branches ;
- next ;
-
-
- desc
- @First version now operational.
- @
-
-
- 1.10
- log
- @now that gethostname() uses a system call initsprite can no longer
- use it to figure out the name of the host. Instead it must get the
- host id from the kernel, determine the host name via the Host
- library, and set the host name in the kernel.
- @
- text
- @
- /*
- * initsprite --
- *
- * This program is the first user process execed by the Sprite kernel.
- *
- * Copyright 1988 Regents of the University of California
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
- #ifndef lint
- static char rcsid[] = "$Header: /sprite/src/cmds/initsprite/RCS/initsprite.c,v 1.9 91/05/07 18:38:38 jhh Exp $ SPRITE (Berkeley)";
- #endif not lint
-
- #include "option.h"
- #include <sprite.h>
- #include <errno.h>
- #include <fs.h>
- #include <fsCmd.h>
- #include <host.h>
- #include <signal.h>
- #include <status.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sysStats.h>
- #include <sys/file.h>
- #include <sys/param.h>
- #include <sys/wait.h>
-
- /*
- * Initial input/output device to open.
- */
- #define CONSOLE "/dev/console"
-
- /*
- * Command script to execute after doing bare-bones initialization.
- * If a host-dependent script exists, it is used in preference to
- * this one.
- */
- #define BOOTCMDS "/boot/bootcmds"
-
- /*
- * Program to exec if we're coming up single user.
- */
- char login[] = "login";
-
- /*
- * Command that was used to boot the machine.
- */
- char *bootCommand = NULL;
-
- /*
- * TRUE => run a login after initial setup.
- */
- Boolean singleUser = FALSE;
-
- /*
- * TRUE => check any disks
- */
- Boolean checkDisk = TRUE;
-
- int dummy;
-
- Option optionArray[] = {
- {OPT_STRING, "b", (Address) &bootCommand, "Boot string passed to prom."},
- {OPT_TRUE, "s", (Address) &singleUser, "Boot single-user mode."},
- {OPT_FALSE, "f", (Address) &checkDisk, "Don't check disks (fastboot)."},
- {OPT_TRUE, "root", (Address) &dummy, "Used by kernel, but not initsprite."},
- {OPT_TRUE, "nonroot", (Address) &dummy,
- "Used by kernel, but not initsprite."},
- {OPT_STRING, "rootdisk", (Address) &dummy,
- "Used by kernel, but not initsprite."},
- };
- int numOptions = sizeof(optionArray) / sizeof(Option);
-
- /*
- *----------------------------------------------------------------------
- *
- * Exec --
- *
- * Utility procedure to run a command and wait for the child
- * to exit.
- *
- * Results:
- * Returns 0 if all went well, -1 otherwise.
- *
- * Side effects:
- * Prints a message if an error occurs.
- *
- *----------------------------------------------------------------------
- */
-
- int
- Exec(name, argv)
- char *name; /* Name of file to exec. */
- char **argv; /* Null-terminated array of arguments. */
- {
- int pid, childPid;
- union wait status;
-
- pid = fork();
- if (pid == 0) {
- execvp(name, argv);
- _exit(1);
- }
- if (pid < 0) {
- fprintf(stderr,
- "Initsprite couldn't fork child for \"%s\": %s\n",
- name, strerror(errno));
- return -1;
- }
- childPid = wait(&status);
- if (childPid < 0) {
- fprintf(stderr,
- "Initsprite couldn't wait for \"%s\": %s\n",
- name, strerror(errno));
- return -1;
- }
- if (childPid != pid) {
- fprintf(stderr, "Initsprite waited for child 0x%x, got child 0x%x.\n",
- pid, childPid);
- return -1;
- }
- if (WIFSTOPPED(status)) {
- fprintf(stderr, "Initsprite child \"%s\" stopped instead of exiting.\n",
- name);
- return -1;
- }
- if (status.w_retcode != 0) {
- return -1;
- }
- return 0;
- }
-
- /*
- *----------------------------------------------------------------------
- *
- * main --
- *
- * Main program for first user process in Sprite.
- *
- * Results:
- * Never returns.
- *
- * Side effects:
- * Lots. Read the code..
- *
- *----------------------------------------------------------------------
- */
-
- main(argc, argv)
- int argc; /* Number of arguments */
- char **argv; /* Arguments */
- {
- char *argArray[20];
- static struct sigvec action = {SIG_IGN, 0, 0};
- static char string[200];
- static char name[MAXHOSTNAMELEN];
- static char hostID[10];
- int i;
- int status;
- int argsReturned;
- static char hostMachType[50];
- char pathname[MAXPATHLEN];
- Host_Entry *hostInfo;
- Fs_Prefix prefix;
- Host_Entry *rootInfo;
- int spriteID;
-
-
-
- argsReturned = Opt_Parse(argc, argv, optionArray, numOptions, 0);
-
- /*
- * Try to access the local boot directory. If it exists, then
- * we have a local disk and we have to look for everything relative to
- * the prefix. Otherwise we look relative to /.
- */
- /*
- * Open the console which will in turn get inherited as stdin etc.
- * by the shells that are forked. After this, stdio can be used
- * for I/O. If this fails, exit with status 2 to indicate what
- * happened (can't print a message, since there's no I/O yet).
- */
-
- if ((open(CONSOLE, O_RDONLY, 0) != 0)
- || (open(CONSOLE, O_WRONLY, 0) != 1)
- || (open(CONSOLE, O_WRONLY, 0) != 2)) {
- Test_PrintOut("Initsprite couldn't open console %s: %s\n",
- CONSOLE, strerror(errno));
- exit(2);
- }
- if (getwd(pathname) == 0) {
- printf("Couldn't get working directory: %s\n", pathname);
- } else {
- printf("%s/%s starting up.\n", pathname, argv[0]);
- }
- if (argsReturned > 1) {
- Opt_PrintUsage(argv[0], optionArray, Opt_Number(optionArray));
- }
- /*
- * Set up signal actions.
- */
-
- if (sigvec(SIGINT, &action, (struct sigvec *) NULL) != 0) {
- fprintf(stderr,
- "Warning: initsprite can't ignore SIGINT signals: %s\n",
- strerror(errno));
- }
- if (sigvec(SIGQUIT, &action, (struct sigvec *) NULL) != 0) {
- fprintf(stderr,
- "Warning: initsprite can't ignore SIGQUIT signals: %s\n",
- strerror(errno));
- }
- if (sigvec(SIGHUP, &action, (struct sigvec *) NULL) != 0) {
- fprintf(stderr,
- "Warning: initsprite can't ignore SIGHUP signals: %s\n",
- strerror(errno));
- }
- if (sigvec(SIGTERM, &action, (struct sigvec *) NULL) != 0) {
- fprintf(stderr,
- "Warning: initsprite can't ignore SIGTERM signals: %s\n",
- strerror(errno));
- }
- /*
- * Set up the environment.
- */
-
- status = Proc_GetHostIDs((int *) NULL, &spriteID);
- if (status != SUCCESS) {
- fprintf(stderr, "Initsprite couldn't get host ID: %s\n",
- Stat_GetMsg(status));
- goto exitError;
- }
- hostInfo = Host_ByID(spriteID);
- if (hostInfo == NULL) {
- fprintf(stderr,
- "Initsprite can't get information about host %d: %s\n",
- spriteID, strerror(errno));
- goto exitError;
- }
- strncpy(name, hostInfo->name, MAXHOSTNAMELEN);
- strncpy(hostMachType, hostInfo->machType, 50);
- sprintf(hostID, "%d", hostInfo->id);
- Host_End();
- setenv("HOST", name);
- setenv("MACHINE", hostMachType);
- sprintf(string, ".:./cmds:/sprite/cmds.%.50s:/sprite/cmds", hostMachType);
- setenv("PATH", string);
- setenv("HOME", "/");
- setenv("USER", "root");
-
- status = Sys_SetHostName(name);
- if (status != SUCCESS) {
- /*
- * Ignore the error if the system call was invalid. Assume we are
- * running on an old kernel.
- */
- if (status != SYS_INVALID_SYSTEM_CALL) {
- fprintf(stderr, "Initsprite couldn't set host name: %s\n",
- Stat_GetMsg(status));
- }
- }
- if (singleUser) {
- /*
- * If we are coming up single user then go to a login.
- */
- fprintf(stderr,"Single user mode requires root password.\n");
- argArray[0] = "login";
- argArray[1] = "-d";
- argArray[2] = CONSOLE;
- argArray[3] = "-l";
- argArray[4] = "root";
- argArray[5] = "-t";
- argArray[6] = 0;
- status = Exec(login, argArray);
- if (status != 0) {
- argArray[0] = "csh";
- argArray[1] = "-i";
- argArray[2] = 0;
- status = Exec("csh", argArray);
- }
- if (status != 0) {
- fprintf(stderr, "Can't run a shell.\n");
- }
- fprintf(stderr,"Initsprite continuing.\n");
- }
- /*
- * Find the root server.
- */
- status = SUCCESS;
- for (i = 0; status == SUCCESS; i++) {
- bzero((char *) &prefix, sizeof(Fs_Prefix));
- status = Sys_Stats(SYS_FS_PREFIX_STATS, i, (Address) &prefix);
- if (status == SUCCESS) {
- if (!strcmp(prefix.prefix, "/")) {
- rootInfo = Host_ByID(prefix.serverID);
- setenv("ROOTSERVER", rootInfo->name);
- break;
- }
- }
- }
- /*
- * If there is a bootcmds file in
- * the host-specific directory, execute it instead of the one in /.
- * Remember that the /.cshrc file will also be loaded by csh when
- * processing bootcmds.
- */
-
- sprintf(string, "/hosts/%.50s/bootcmds", name);
- if (access(string, R_OK) != 0) {
- strcpy(string, BOOTCMDS);
- }
- fprintf(stderr, "Executing %s\n", string);
- i = 0;
- argArray[i++] = "csh";
- argArray[i++] = string;
- if (bootCommand != NULL) {
- argArray[i++] = "-b";
- argArray[i++] = bootCommand;
- }
- if (!checkDisk) {
- argArray[i++] = "-f";
- }
- argArray[i++] = "-i";
- argArray[i++] = hostID;
- argArray[i++] = 0;
- if (Exec("csh", argArray) == 0) {
- exit(0);
- }
- /*
- * The boot command script did not complete successfully.
- * Try to bail out to a shell.
- */
-
- fprintf(stderr, "Initsprite: boot command file exited abnormally!\n");
-
- argArray[0] = "csh";
- argArray[1] = "-i";
- argArray[2] = 0;
- execvp("csh", argArray);
- fprintf(stderr, "Init failed when trying to bailout to csh: %s\n",
- strerror(errno));
- fprintf(stderr, "Init has run out of things to try: nothing works.\n");
- exitError:
- fprintf(stderr, "Initsprite exiting.\n");
- exit(1);
- }
- @
-
-
- 1.9
- log
- @made rootdisk option take a string argument
- @
- text
- @d18 1
- a18 1
- static char rcsid[] = "$Header: /sprite/src/cmds/initsprite/RCS/initsprite.c,v 1.8 91/03/05 11:24:28 jhh Exp $ SPRITE (Berkeley)";
- a54 12
- * Name of temporary prefix for root partition.
- */
- char prefix[] = "/";
-
- /*
- * Name of local boot directory. If we have one we are booting
- * standalone.
- */
- char localBootDir[] = "/boot";
-
-
- /*
- d165 1
- a165 2
- #define HOST_NAME_LENGTH 255
- static char hostName[HOST_NAME_LENGTH];
- d175 1
- d203 1
- a203 1
- printf("%s/initsprite starting up.\n", pathname);
- d236 4
- a239 3
- if (gethostname(hostName, HOST_NAME_LENGTH) != 0) {
- fprintf(stderr, "Initsprite couldn't get host name: %s\n",
- strerror(errno));
- d242 1
- a242 3
- hostName[HOST_NAME_LENGTH-1] = 0;
- printf("hostName is %s.\n", hostName);
- hostInfo = Host_ByName(hostName);
- d245 2
- a246 2
- "Initsprite can't get information about host \"%s\": %s\n",
- hostName, strerror(errno));
- d249 1
- d253 1
- a253 1
- setenv("HOST", hostName);
- d260 11
- a298 1
- printf("Searching for root prefix.\n");
- a304 1
- printf("Setting ROOTSERVER = %s\n", rootInfo->name);
- d317 1
- a317 1
- sprintf(string, "/hosts/%.50s/bootcmds", hostName);
- @
-
-
- 1.9.1.1
- log
- @Initial branch for Sprite server.
- @
- text
- @d18 1
- a18 1
- static char rcsid[] = "$Header: /sprite/src/cmds/initsprite/RCS/initsprite.c,v 1.9 91/05/07 18:38:38 jhh Exp $ SPRITE (Berkeley)";
- @
-
-
- 1.8
- log
- @new boot sequence
- @
- text
- @d18 1
- a18 1
- static char rcsid[] = "$Header: /a/newcmds/initsprite/RCS/initsprite.c,v 1.6 89/07/18 13:46:12 jhh Exp $ SPRITE (Berkeley)";
- d90 1
- a90 1
- {OPT_TRUE, "rootdisk", (Address) &dummy,
- @
-
-
- 1.7
- log
- @passes -t to login process
- @
- text
- @a39 3
- #ifdef spur
- #define CONSOLE "/tmp/rconsole"
- #else
- a40 1
- #endif
- a49 18
- * Command script to use to set things up for a local disk.
- */
- #define DISKCMDS "diskcmds"
-
- /*
- * Command script to execute so set things for exporting "/".
- */
-
- #define ROOTCMDS "rootcmds"
-
- /*
- * File that contains information about a server machine. /etc/spritehosts
- * may not be available so each server has its own information about itself.
- */
-
- #define SERVERINFO "serverInfo"
-
- /*
- d57 1
- a57 1
- char prefix[] = "/bootTmp";
- d63 1
- a63 1
- char localBootDir[] = "/bootTmp/boot";
- d81 1
- a81 9
- /*
- * TRUE => source rootCommands
- */
- Boolean runRootCmds = FALSE;
-
- /*
- * TRUE => boot as a client even if we are a file server.
- */
- Boolean forceClient = FALSE;
- d87 5
- a91 2
- {OPT_TRUE, "x", (Address) &runRootCmds, "Source rootCmds file."},
- {OPT_TRUE, "c", (Address) &forceClient, "Boot fileserver like a client."},
- a182 2
- Boolean standalone;
- Boolean fileServer;
- d185 3
- a197 11
- if (access(prefix, F_OK) == 0) {
- fileServer = TRUE;
- if (!forceClient && (access(localBootDir, F_OK) == 0)) {
- standalone = TRUE;
- } else {
- standalone = FALSE;
- }
- } else {
- standalone = FALSE;
- fileServer = FALSE;
- }
- d248 13
- a260 35
- if (standalone) {
- FILE *fp;
- int n;
- fp = fopen(SERVERINFO,"r");
- if (fp == NULL) {
- fprintf(stderr, "Initsprite couldn't open %s.\n", SERVERINFO);
- goto exitError;
- }
- n = fscanf(fp, " %s %*s %*s %*s %s %s", hostID, hostMachType,
- hostName);
- if (n != 3) {
- fprintf(stderr, "Initsprite: can't understand %s.\n", SERVERINFO);
- goto exitError;
- }
- fclose(fp);
- } else {
- Host_Entry *hostInfo;
-
- if (gethostname(hostName, HOST_NAME_LENGTH) != 0) {
- fprintf(stderr, "Initsprite couldn't get host name: %s\n",
- strerror(errno));
- goto exitError;
- }
- hostName[HOST_NAME_LENGTH-1] = 0;
- printf("hostName is %s.\n", hostName);
- hostInfo = Host_ByName(hostName);
- if (hostInfo == NULL) {
- fprintf(stderr,
- "Initsprite can't get information about host \"%s\": %s\n",
- hostName, strerror(errno));
- goto exitError;
- }
- strncpy(hostMachType, hostInfo->machType, 50);
- sprintf(hostID, "%d", hostInfo->id);
- Host_End();
- d262 3
- a285 4
- if (!standalone) {
- fprintf(stderr, "Can't exec login. Bailing to shell.\n");
- fflush(stderr);
- }
- d297 1
- a297 8
- * After the console has been opened, the stdio routines can be used.
- * Execute command scripts to do system initialization.
- *
- * rootcmds is run when a non-root file server is supposed to export
- * root. This allows it to do special initialization.
- *
- * diskcmds is used for machines with local disks to configure
- * the filesystems they control.
- d299 12
- a310 31
-
- if (!fileServer) {
- /*
- * No local storage.
- */
- fprintf(stderr, "No local disk.\n");
- } else {
- printf("Executing %s.\n", DISKCMDS);
- i = 0;
- argArray[i++] = "csh";
- argArray[i++] = "-f";
- argArray[i++] = DISKCMDS;
- if (bootCommand != NULL) {
- argArray[i++] = "-b";
- argArray[i++] = bootCommand;
- }
- if (!checkDisk) {
- argArray[i++] = "-f";
- }
- argArray[i++] = "-i";
- argArray[i++] = hostID;
- argArray[i++] = 0;
- (void) Exec("csh", argArray);
-
- if (runRootCmds) {
- printf("Executing %s.\n", ROOTCMDS);
- i = 0;
- argArray[i++] = "csh";
- argArray[i++] = "-f";
- argArray[i++] = ROOTCMDS;
- (void) Exec("csh", argArray);
- a312 1
-
- d314 1
- a314 2
- * After initializing the local disk, the network wide initialization
- * file, /bootcmds, is executed. If there is a bootcmds file in
- a317 4
- *
- * If we are booting standalone then now is the time to look for
- * the real root server. Check the prefix table to make sure we
- * aren't exporting "/", then delete "/" and look for the server.
- d319 1
- a319 34
-
- if (standalone) {
- static char rootPrefix[] = "/";
- Fs_Prefix prefix;
- Boolean deleteRoot;
-
- deleteRoot = TRUE;
- status = SUCCESS;
-
- for (i = 0; status == SUCCESS; i++) {
- bzero((char *) &prefix, sizeof(Fs_Prefix));
- status = Sys_Stats(SYS_FS_PREFIX_STATS, i, (Address) &prefix);
- if (status == SUCCESS) {
- if (!strcmp(prefix.prefix, "/")) {
- if (prefix.flags & FS_EXPORTED_PREFIX) {
- deleteRoot = FALSE;
- }
- break;
- }
- }
- }
- if (deleteRoot) {
- Fs_Command(FS_PREFIX_CLEAR, strlen(rootPrefix) + 1, rootPrefix);
- do {
- status = access("/", R_OK | X_OK);
- if (status) {
- perror("Can't access \"/\": ");
- fprintf(stderr, "Will try again after 1 minute.\n");
- fflush(stderr);
- sleep(60);
- }
- } while (status);
- }
- }
- d325 13
- a337 3
- argArray[0] = "csh";
- argArray[1] = string;
- argArray[2] = 0;
- a338 7
- if (fileServer) {
- status = Fs_Command(FS_PREFIX_DELETE, strlen(prefix) + 1, prefix);
- if (status != SUCCESS) {
- fprintf(stderr, "Couldn't unmount %s: %s\n", prefix,
- Stat_GetMsg(status));
- }
- }
- @
-
-
- 1.6
- log
- @changed ifdef SPUR to ifdef spur
- @
- text
- @d18 1
- a18 1
- static char rcsid[] = "$Header: /a/newcmds/initsprite/RCS/initsprite.c,v 1.5 89/07/12 11:47:26 jhh Exp $ SPRITE (Berkeley)";
- d338 2
- a339 1
- argArray[5] = 0;
- @
-
-
- 1.5
- log
- @fileservers can now deal with a trashed local root
- @
- text
- @d18 1
- a18 1
- static char rcsid[] = "$Header: /a/newcmds/initsprite/RCS/initsprite.c,v 1.4 89/06/19 14:33:58 jhh Exp $ SPRITE (Berkeley)";
- d40 1
- a40 1
- #ifdef SPUR
- @
-
-
- 1.4
- log
- @New boot sequence
- @
- text
- @d18 1
- a18 1
- static char rcsid[] = "$Header: /a/newcmds/initsprite/RCS/initsprite.c,v 1.3 89/01/11 12:21:21 mendel Exp Locker: jhh $ SPRITE (Berkeley)";
- d81 6
- d220 1
- a220 1
- * Try to access the root partition temporary prefix. If it exists, then
- d226 1
- a226 1
- if (!forceClient) {
- @
-
-
- 1.3
- log
- @Open /tmp/rconsole rather that /tmp/console if spur.
- @
- text
- @d1 1
- d18 1
- a18 1
- static char rcsid[] = "$Header: initsprite.c,v 1.2 88/08/20 14:32:23 ouster Exp $ SPRITE (Berkeley)";
- d21 2
- d24 2
- d28 1
- d32 1
- d34 1
- a37 5
- * Shell started up for users, regardless of what is in /etc/passwd.
- */
- char localShell[] = "/local/bootBin/csh";
-
- /*
- d51 1
- a51 1
- #define BOOTCMDS "/bootcmds"
- d56 59
- a114 1
- #define DISKCMDS "/local/diskcmds"
- a143 3
- execvp(localShell, argv);
- fprintf(stderr, "Initsprite couldn't exec \"%s\": %s\n",
- name, strerror(errno));
- d191 3
- a193 1
- main()
- d195 1
- a195 1
- char *argArray[10];
- a196 1
- Host_Entry *hostInfo;
- d200 29
- a228 1
-
- d239 2
- a240 2
- Test_PrintOut("Initsprite couldn't open console: %s\n",
- strerror(errno));
- d243 8
- a250 2
- fprintf(stderr, "Initsprite starting up.\n");
-
- a274 1
-
- d279 35
- a313 12
- if (gethostname(hostName, HOST_NAME_LENGTH) != 0) {
- fprintf(stderr, "Initsprite couldn't get host name: %s\n",
- strerror(errno));
- exit(1);
- }
- hostName[HOST_NAME_LENGTH-1] = 0;
- hostInfo = Host_ByName(hostName);
- if (hostInfo == NULL) {
- fprintf(stderr,
- "Initsprite can't get information about host \"%s\": %s\n",
- hostName, strerror(errno));
- exit(1);
- d315 3
- a317 4
- setenv("HOST", hostInfo->name);
- setenv("MACHINE", hostInfo->machType);
- sprintf(string, ".:/sprite/cmds.%.50s:/sprite/cmds",
- hostInfo->machType);
- a320 1
- Host_End();
- d322 27
- d353 4
- a356 1
- * /local/diskcmds is used for machines with local disks to configure
- a357 1
- * Echo is turned on, "-x", so the attachDisk commands are visible.
- d360 1
- a360 1
- if (access(localShell, X_OK) != 0) {
- d366 25
- a390 5
- argArray[0] = "csh";
- argArray[1] = "-fx";
- argArray[2] = DISKCMDS;
- argArray[3] = 0;
- (void) Exec(localShell, argArray);
- d399 4
- d405 34
- a438 1
- sprintf(string, "/hosts/%.50s/bootcmds", hostInfo->name);
- d447 7
- a455 1
-
- d464 2
- a465 1
- argArray[1] = 0;
- a468 4
- argArray[0] = localShell;
- execvp(localShell, argArray);
- fprintf(stderr, "Init failed when trying to bailout to %s: %s\n",
- localShell, strerror(errno));
- d470 2
- @
-
-
- 1.2
- log
- @Lint cleanup.
- @
- text
- @d17 1
- a17 1
- static char rcsid[] = "$Header: initsprite.c,v 1.1 88/08/19 18:06:06 ouster Exp $ SPRITE (Berkeley)";
- d37 3
- d41 1
- @
-
-
- 1.1
- log
- @Initial revision
- @
- text
- @d17 1
- a17 1
- static char rcsid[] = "$Header: initSprite.c,v 1.16 88/06/10 10:17:56 ouster Exp $ SPRITE (Berkeley)";
- d24 1
- d69 1
- a69 1
- Exec(name, argv, usePath)
- d98 1
- a98 1
- fprintf("Initsprite waited for child 0x%x, got child 0x%x.\n",
- d131 4
- a134 5
- char *argArray[10];
- struct sigvec action = {SIG_IGN, 0, 0};
- Host_Entry *hostInfo;
- int hostId;
- static char string[200];
- d136 1
- a136 1
- static char hostName[HOST_NAME_LENGTH];
- @
-